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,请运行更新查询

谢谢您的回答。我已经做了类似的事情(检查添加的代码),但我想让“默认值”以某种方式完成工作。。。