是否可以添加self
- 我的意思是当前对象是ManyToManyField
?
class City(models.Model):
name = models.CharField(max_length=80)
country = models.ForeignKey('Country')
close_cities = models.ManyToManyField('City',blank=True, related_name='close_cities_set')
如果我创建,请说x = City.objects.create(...)
,我希望x
默认为close_cities
的一部分。
我找不到与此问题相关的任何内容。我试图覆盖create()
方法,但它没有用。
尝试后,我决定创建一个信号,在创建实例后添加城市。不幸的是,这不起作用,但我无法弄清楚为什么。正在调用信号,条件if created
为True
(已选中)。
@receiver(post_save,sender=myapp_models.City)
def add_self_into_many_to_many_field(sender, instance, created, **kwargs):
if created:
instance.close_cities.add(instance)
instance.save()
你知道问题出在哪里吗?
答案 0 :(得分:0)
在这种情况下,pre_save
信号将是更好的解决方案。
在您的解决方案city.save
中调用add_self_into_many_to_many_field
。 instance.save
来电add_self_into_many_to_many_field
。等等...
@receiver(pre_save, sender=myapp_models.City)
def add_self_into_many_to_many_field(sender, instance, **kwargs):
if instance.pk is None:
instance.close_cities.add(instance)