擅长:python、mysql、java
<p>为了在Django中建立<code>Page</code>和{<cd2>}之间的关系,您宁愿使用外键关系,而不是继承。在</p>
<pre><code>class PageImageElement(PageElement):
page = models.ForeignKey(Page,
on_delete=models.CASCADE,
related_name='images')
image = models.ImageField(null=True)
image_url = models.URLField(null=True)
</code></pre>
<p>每个用户的帖子都会创建一个<code>Page</code>的实例。每次向页面添加图像都会创建一个<code>PageImageElement</code>的实例,您可以使用相关名称查询它们。这种方式可以非常容易地访问单个<code>Page</code>的所有视频、图像、文本模块。在</p>
<p>关于一个相关的注释,我想说<code>PageElement</code>类可以是抽象的<a href="https://docs.djangoproject.com/en/2.1/topics/db/models/#abstract-base-classes" rel="nofollow noreferrer">see the docs</a>,如果您像在<code>video = models.FileField(null=True)</code>中那样声明可能包含<code>null</code>值的字段,那么它可能也值得声明{<cd9>},否则在创建未定义这些字段的对象时会出现错误。例如,在这里讨论:<a href="https://stackoverflow.com/questions/8609192/differentiate-null-true-blank-true-in-django">differentiate null=True, blank=True in django</a></p>