внешний ключ django условный - PullRequest
0 голосов
/ 16 октября 2018

Ниже приведены мои модели.

class DoneType (AbstractTimeStamp):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=200, primary_key=True)

class Done (AbstractTimeStamp):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    contents = models.CharField(max_length=200)
    done_type = models.ForeignKey(DoneType, on_delete=models.SET_NULL, null=True)
    start_time = models.DateTimeField()

> Один пользователь может иметь несколько моделей DONE.И модели DONE могут иметь много моделей DONE_TYPE.
Однако это возможно только в том случае, если USER в модели DONE совпадает с USER в модели DONE_TYPE.
Как мне это реализовать?

1 Ответ

0 голосов
/ 17 октября 2018

Было бы более разумно сделать так, чтобы DoneType.user наследовал его ForeignKey от Done, а затем вы могли бы назвать его как done_type.user.user.

Таким образом,вам даже не нужно будет делать какие-либо сравнения, поэтому не требуется никакого дополнительного обращения к базе данных (тоже быстрее) .

Но если вы хотите сравнить 2 поля, вам нужно что-то сделатькак это в ваших взглядах ...

Предположим done = Done.objects.get(id=1) и done_type = DoneType.objects.get(id=1)

if done.user == done_type.user:
    # do something

Но сравнивать это так - плохая идея.

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