擅长:python、mysql、java
<p>您的设置存在一些问题:</p>
<ul>
<li>自然键的全部要点是避免自动生成数据,如自动递增主键,以便您可以在其他数据库(生产、暂存)中识别记录,这些数据库可能具有不同的插入顺序。相反,将自动生成的<em>主键作为<em>自然键</em>返回</李>
<li>您似乎希望将序列化框架用于它不适用的东西,或者其他包(如Django REST framework)做得更好</李>
<li>您的模型不适用于自然关键点,因为它们只有一个字段,而且字段不是唯一的,因此在不使用主键的情况下无法引用记录</李>
<li>最后,我不明白为什么一开始就需要自然钥匙。是什么让你决定这么做的</李>
</ul>
<blockquote>
<p>This is the scenario where child table is not willing to refer for parent table</p>
</blockquote>
<p>我不知道那是什么意思。您可以将子对象链接到父对象,也可以不链接。他们不是真正的孩子,应该遵守你的计划:)。如果需要父项,则对外键执行<em>not</em>add null=True,这样它就会抛出一个错误,然后您就知道编程问题出在哪里了</p>
<p>总而言之,我认为你对事情如何运作以及如何解决它们做出了一些假设,但你选择的解决方案并不合适</p>
<p>如前所述,你应该首先弄清楚为什么没有父母就可以创造孩子,如果这不是你想要的,并解决这个问题。然后重新评估序列化应该如何工作,因为在自然键中粘贴自动ID毫无意义。您可能不需要自然关键点。如果您这样做是为了更改输出格式,那么正如其他人所建议的,DRF为您提供了更好的选择,但它也伴随着陡峭的学习曲线</p>