Два внешних ключа для встроенной формы в админке в Django - PullRequest
0 голосов
/ 23 декабря 2010

Я хочу иметь 2 иностранных ключа для встроенной формы в админке. У меня есть модель расписания со следующими полями:

class Timesheet(models.Model):
    date = models.ForeignKey(DateTimesheet, related_name="day")
    supervisor = models.ForeignKey(DateTimesheet, related_name="superintendent")
    job = models.ForeignKey(Job)
    phase = models.ForeignKey(Phase)
    equip = models.ForeignKey(Equipment, null=True, blank=True)
    employee = models.ForeignKey(Employee)
    local = models.ForeignKey(Local)
    pay_class = models.ForeignKey(PayClass)
    reg = models.IntegerField(max_length=1)
    ot = models.IntegerField(max_length=2, null=True, blank=True)
    bill_rate = models.DecimalField(decimal_places=2,max_digits=6,blank=True,null=True)
    bill_hours = models.IntegerField(max_length=2,blank=True,null=True,)

и DateTimesheet с этими полями:

class DateTimesheet(models.Model):
    date = models.DateField()
    supervisor = models.ForeignKey(User)

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

1 Ответ

1 голос
/ 23 декабря 2010

Если расписание является родительской моделью, а DateTimesheet - встроенным (или наоборот), комбинированные ключи не нужны, просто:

  1. делает супервизор в обеих моделях ForeignKey (пользователь)
  2. пропустить поле супервизора во встроенной форме
  3. установить его в поле родительской модели при сохранении с помощью , переопределяя метод save_formset .

Помните:

InlineModelAdmin использует многие из тех же функций, что и ModelAdmin, и добавляет некоторые свои собственные (общие функции фактически определены в суперклассе BaseModelAdmin).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...