Общие представления от object_id или родительского объекта - PullRequest
0 голосов
/ 16 июня 2009

У меня есть модель, которая представляет должность в компании:

class Position(models.Model):
    preferred_q = ForeignKey("Qualifications", blank=True, null=True, related_name="pref")
    base_q = ForeignKey("Qualifications", blank=True, null=True, related_name="base")

    #[...]

Имеет два «внутренних объекта», которые представляют минимальные квалификации и «предпочтительные» квалификации для должности.

У меня есть общий вид, настроенный для редактирования / просмотра экземпляра Position. На этой странице у меня есть ссылка, которая ведет на другую страницу, где пользователь может редактировать каждый тип квалификации. Проблема в том, что я не могу просто передать первичный ключ квалификации, потому что этот объект может быть пустым (пустым и нулевым является Истина, что предусмотрено) Вместо этого я хотел бы просто передать первичный ключ позиции и ключевое слово preferred_qualification или base_qualification в URL, например:

(r'^edit/preferred_qualifications/(?P<parent_id>\d{1,4})/$', some_view),

(r'^edit/base_qualifications/(?P<parent_id>\d{1,4})/$', some_view),

Есть ли способ сделать это с использованием общих представлений, или мне придется создавать свое собственное представление? Это просто, как торт с использованием обычных представлений, но я пытаюсь перевести все, что я могу, в общие представления для простоты.

Ответы [ 2 ]

0 голосов
/ 16 июня 2009

Если вы хотите, чтобы форма редактирования была для одного из связанных экземпляров InnerModel, но вы хотите передать PK для ParentModel в URL (насколько я могу сказать, это то, что вы спрашиваете, хотя это не так. не очень понятно), вам придется использовать вид оболочки. Иначе как общий вид Django должен магическим образом знать, какой относительный объект вы хотите редактировать?

В зависимости от того, насколько непротиворечивы атрибуты связанного объекта для «многих моделей», которые вы хотите редактировать таким образом, есть большая вероятность, что вы можете выполнить эту работу только с одним видом оболочки, а не со многими. Трудно сказать, не видя больше кода.

0 голосов
/ 16 июня 2009

Как объясняется в документации для общего вида update_object , если у вас есть ParentModel в качестве значения для клавиши 'model' в options_dict в вашем определении URL, вы должны быть всеми задавать.

...