Подавить сигнал Джанго - PullRequest
0 голосов
/ 11 июня 2018

Я боролся с этим уже пару недель, и, кажется, я не могу заставить его работать.

Когда вы регистрируетесь на моем сайте, вы можете создать профиль пользователя икомпания.Затем вы можете добавлять участников в свою компанию, однако сигнал просто срабатывает каждый раз и создает пустые компании.Как мне остановить django от этого?

model.py

class Companyname(models.Model):
company_name = models.CharField(max_length=100, default = '', null=True, blank=True)
user = models.OneToOneField(User, on_delete=models.CASCADE)
description = models.TextField(max_length=10000, default = '', null=True, blank=True)

def __str__(self):
    return self.company_name 

@receiver(post_save, sender=User)
def update_user_company(sender, instance, created, **kwargs):
    if created:
        Companyname.objects.create(user=instance)
        if instance.companyname.company_name is '':
            print("just print this")
        else:
            instance.companyname.save()

, когда компания хранится в профиле пользователя

class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
description = models.CharField(max_length=100, default = '', null=True, blank=True)
company = models.ForeignKey(Companyname, null=True, on_delete=models.CASCADE)
role = models.ForeignKey(Role, null=True, on_delete=models.CASCADE)
team = models.ForeignKey(Team, null=True, on_delete=models.CASCADE)
company_admin = models.BooleanField(default=False)

add_user view.py

def add_user(request):
if request.method == 'POST':
    form = AddUserForm(request.POST)
    if form.is_valid():
        company = request.user.userprofile.company_id

        form.save()
        user = form.save()

        user.refresh_from_db()

        user.userprofile.company_id = company
        user.userprofile.role = form.cleaned_data.get('role')
        user.is_active = False
        user.save()

регистрация view.py

def register(request):
if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        user = form.save()
        user.refresh_from_db()  # load the profile instance created by the signal
        user.userprofile.description = form.cleaned_data.get('description')
        user.companyname.company_name = form.cleaned_data.get('company_name')
        user.userprofile.company_id = user.companyname.id
        user.save()
        raw_password = form.cleaned_data.get('password1')
        user = authenticate(username=user.username, password=raw_password)

        login(request, user)
        return redirect('/account/my_product')
else:
    form = RegistrationForm()
return render(request, 'accounts/reg_form.html', {'form': form})

Надеюсь, кто-то может помочь :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...