0
나는 두 가지 모델 Profile
및 Company
Django 신호 여러 보낸 사람과 여러 인스턴스에서 post_save 메서드를 수행하는 방법은 무엇입니까? 당신이 <code>Profile</code>이 user_model 확장 기능입니다 볼 수 있듯이
models.py
class Profile(models.Model):
user = models.OneToOneField(User)
company = models.ForeignKey('company.Company', null=True)
phone = models.CharField(max_length=10, blank=True)
@receiver(post_save, sender=User)
@receiver(post_save, sender=Company)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
Profile.objects.create(company=instance)
instance.profile.save()
있습니다. 인스턴스를 하나만 보낼 때 작동하도록했습니다.
models.py
class Company(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=10, blank=True, unique=True)
phone = models.CharField(max_length=10, blank=True)
Company
이 성공적으로 생성됩니다. 회사를 만들 때 필드를 Company
의 Profile
으로 저장하고 싶습니다. 신호 기반의 접근 방식에 대한 코드해야 다음 모델 아키텍처에 따르면 views.py
def form_valid(self, form):
company = form.save(commit=False)
user = self.request.user
name=form.cleaned_data['name']
phone=form.cleaned_data['phone']
company.name = name
company.phone = phone
company.user = user
company.save()
Profile.refresh_from_db()
Profile.company = name
Profile.save()
return super(CompanyCreateView, self).form_valid(form)
[하나 개의 수신기와 다수의 포스트 \ _save의 신호들을 통합]의 가능한 복제 (https://stackoverflow.com/questions/17507784/consolidating-multiple-post-save-signals-with-one-receiver) –
나는 전에 그것을 보았다. 신호를 여러 사람에게 보내는 방법을 알 수 있습니다. 단일 신호로 여러 인스턴스를 전달하는 방법을 알고 싶습니다. 'views.py'는 더 나은 이해를 줄 것입니다. –
장고 (Django) 내장 신호는이 사건을 처리 할 수 없습니다. 대신 자신의 신호를 만들어야합니다. https://docs.djangoproject.com/en/1.11/topics/signals/#defining-and-sending-signals –