Это либо ForeignKey
от Article
до Magazine
, либо ManyToManyField
между Article
и Magazine
.Это зависит от того, может ли статья появиться в нескольких журналах (часто журналисты продают одну и ту же статью один и тот же разным журналам, тогда они, за исключением некоторого форматирования, дословно одинаковы).
В случае, если каждая статья появляется в одном журнале, мы реализуем ее следующим образом:
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
<b>magazine = models.ForeignKey(Magazine, on_delete=models.CASCADE)</b>
def __str__(self):
return self.headline
class Meta:
ordering = ('headline',)
Если статья может остаться неопубликованной , то вы такжевероятно, нужно установить null=True
в конструкторе ForeignKey
.
В случае ManyToManyField
, django будет неявно создать таблицу типа article_magazine
, которая хранит сопоставления из *От 1030 * с до Magazine
с (но если вы сделаете запрос, вы получите только Magazine
с).
Очень вероятно, что отношение не a OneToOneField
.На самом деле OneToOneField
- это ForeignKey
с unique=True
.Таким образом, это означает, что no два Article
s публикуются в то же самое Magazine
.Следовательно, это означает, что каждый Magazine
не имеет или точно один Article
, связанный с ним.