我有以下两种模式:
class Parent(models.Model):
....
class Children(models.Model):
parent = ForeignKey('Parent')
....
在创建子项时,我必须将Parent作为父项传递,我的问题是我想创建子项本身,当我创建Parent时,就像其他字段一样,就像一个简单的“models.TextField”任何人都可以引导我怎么做?
答案 0 :(得分:0)
覆盖__init__()
模型的Children
方法并覆盖save()
模型的Parent
方法:
<强> __ INIT __:强>
# in class Children()
def __init__(self, parentID):
self.parent = parentID
# ...
保存强>
# in class Parent()
def save(self, ...):
# do parent save
# do parent super().save()
# PSEUDO CODE #
if hasChildren:
for each childen of parent:
child = Children(self.id) # <-- entails to overwrite the __init__() method in class Children
child.save()
此外,您需要渲染选项(children-fields)以与父级一起创建子级。
如果您仅使用django-admin界面,则可以向parent
s
modelAdmin`添加内联模型。请参阅django docs
答案 1 :(得分:0)
在from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Parent)
def create_children(sender, **kwargs):
pass
模型的保存方法中添加帖子保存挂钩。
create_children
每当Parent
的实例被保存时, <?php
if(!empty($table['data'])){
echo "<table><body>";
foreach($table['data'] as $data){
echo "<tr>";
echo "<td>".$data[0]."</td>";
echo "<td>".$data[1]."</td>";
echo "<td>".$data[2]."</td>";
echo "</tr>";
}
echo "</body></table>";
}
?>
都会被调用。