У меня проблема с добавлением записи в поле отношения многие ко многим. У меня есть следующие модели:
class Address(models.Model):
id = models.AutoField(primary_key=True)
country = CountryField(blank_label='(select country)', blank=False, null=False, verbose_name='Country')
state = models.CharField(
max_length=50,
choices=STATE_CHOICES,
verbose_name='State',
blank=False,
null=False
)
...
class Volunteer(models.Model):
userID = models.OneToOneField(User, on_delete=models.CASCADE, to_field='id', primary_key=True, related_name='volunteer')
identificationNumber = models.CharField(max_length=50, unique=True, blank=False, null=False, verbose_name='Identification Number')
currentAddress = models.ManyToManyField(Address, related_name='volunteerCurrentAddress', verbose_name='Current Address', blank=False)
permanentAddress = models.ManyToManyField(Address, related_name='volunteerPermanentAddress', verbose_name='Permanent Address', blank=False)
...
def save(self, *args, **kwargs):
self.slug = self.userID.username
super(Volunteer, self).save(*args, **kwargs)
class TemporaryVolunteer(Volunteer):
pass
И в представлениях я получаю поля currentAddress
и permanentAddress
как ManyToManyRelatedManager
. Это temporaryVolunteer.currentAddress
и temporaryVolunteer.permanentAddress
. Я использую их для создания нового экземпляра Volunteer как
volunteer = Volunteer(...)
volunteer.save()
volunteer.currentAddress.add(temporaryVolunteer.currentAddress.all()[0])
volunteer.permanentAddress.add(temporaryVolunteer.permanentAddress.all()[0])
volunteer.save()
Но когда я делаю print(volunteer.currentAddress.all())
или print(volunteer.permanentAddress.all())
, он возвращает пустой набор запросов. Я также проверил административный сайт для подтверждения, и нет никаких записей об адресе в экземпляре волонтера. Есть ли способ добавить записи с помощью этого подхода?