Django 如何制作;“违约”;在模型字段中拾取其他模型的数据';创建条目时的字段?
我有以下型号:Django 如何制作;“违约”;在模型字段中拾取其他模型的数据';创建条目时的字段?,django,django-models,Django,Django Models,我有以下型号: class船期(models.Model): boat_photo=models.ImageField(上传到=get_timestamp_path,blank=True, 详细名称(船照片) boat=models.ForeignKey(“BoatModel”,on_delete=models.SET_NULL,verbose_name=“boat ForeignKey”,NULL=True) memory=models.PositiveSmallIntegerField(空=
class船期(models.Model):
boat_photo=models.ImageField(上传到=get_timestamp_path,blank=True,
详细名称(船照片)
boat=models.ForeignKey(“BoatModel”,on_delete=models.SET_NULL,verbose_name=“boat ForeignKey”,NULL=True)
memory=models.PositiveSmallIntegerField(空=真,空=真,默认=??)
目标是在输入时,“内存”字段中的默认值应选择“船”字段ID或PK,并将其保存为内存“字段”,即两个字段中的ID应一致。
我正在尝试使用默认方法,如:
def funk(自):
返回self.boat.id#或self.boat.pk或self.boat#id–无差异
但是它说–funk应该返回int,而不是foreignkey(错误)
问题是在创建条目时,如何将“boat”字段的foreignkey id存储在“memory”字段中
在save()方法中可以做到这一点,但在我看来,这是一个非常不优雅的解决方案
谢谢
通过save()实现
def save(self,force_insert=False,force_update=False,using=None,update_fields=None):
如果self.boat而不是self.memory:#保存
self.memory=self.boat\u id
elif not self.boat and self.memory:#还原
self.boat_id=self.memory
elif self.boat和self.memory和self.boat_id!=self.memory:#正确
self.memory=self.boat\u id
models.Model.save(self,force\u insert=False,force\u update=False,using=None,
更新(字段=无)
根据我的理解,您可以先做一件事,用
default=0
对于
内存
字段,然后要分配id,请运行更新查询谢谢您的回答。我已经做了类似的事情(检查添加的代码),但我想让“默认值”以某种方式完成工作。。。