Каркас сайта django: Какие модели должны быть связаны с сайтом (иностранные, многие)? - PullRequest
0 голосов
/ 09 января 2012

в соответствии с документом это довольно просто:

class Article(models.Model):
    headline = models.CharField(max_length=200)
    # ...
    site = models.ForeignKey(Site)

но что если у меня есть дополнительная модель?то есть:

class ArticleAttachment(models.Model):
    file = models.FileField(upload_to="foo/bar")
    # ...

ArticleAttachment () уже связан со статьей (которая уже связана с сайтом).я должен все еще добавить иностранный ключ к сайту?и если да / нет, почему?

(производительность не является проблемой.)

thx.

1 Ответ

2 голосов
/ 09 января 2012

Добавление избыточного внешнего ключа может повысить производительность, только если вы хотите отобразить все вложения статьи, например, с заданным site.В противном случае (особенно если вы не заботитесь о производительности вообще), это не поможет вам, а просто вводит больше «обслуживания».Вы всегда можете получить доступ к site вложения, используя

attachment.article.site

, и выполнить фильтрацию, используя

.filter(article__site="...")

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

...