Django создание профиля с пользовательскими полями компании пытается установить связь с владельцем

У меня есть две формы (OwnerCreateForm, EmployeesCreateForm) и 3 модели (Profile, Company и Owner). когда владелец регистрируется, он создает компанию и свой собственный объект User. после входа владельца можно создавать сотрудников.

  1. Пусть владелец подключится к профилю и свяжет его с компанией
  2. .
  3. Мне нужно связать компанию-владельца с сотрудниками.
  4. Чтобы каждая компания управляла своими пользователями, чтобы они видели одно и то же. Вот детали, которые я использую:

МОДЕЛИ

class Profile(models.Model):
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')

    def __str__(self):
        return '{} Profile'.format(self.user)

class Owner(models.Model):
    profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
    
    def __str__(self):
        return '{} Owner'.format(self.profile)

class Tienda(models.Model):
    dueño = models.ForeignKey(Owner, null=True, on_delete=models.CASCADE)
    nombre_tienda = models.CharField(verbose_name='Nombre de la Tienda', max_length=120)
    direccion = models.CharField(verbose_name='Su Direccion', max_length=160)
    phone = models.CharField(max_length=11, null=True)
    businessemail = models.EmailField(unique = True, verbose_name='Su email')

    def __str__(self):
            return self.nombre_tienda


class Employee(models.Model):
    STATUS = (
        ('Admin', 'Admin'),
        ('Gerente', 'Gerente'),
        ('Validador', 'Validador')
    )
    profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
    role = models.CharField(choices=STATUS, max_length=16)
    tienda = models.ForeignKey(Tienda, null=True, on_delete=models.CASCADE)

    def __str__(self):
        texto = "{0} ({1}) {2}"
        return texto.format(self.tienda, self.role, self.role)

ФОРМЫ

class TiendaForm(ModelForm):
    class Meta:
        model = Tienda
        fields = ('nombre_tienda', 'direccion', 'businessemail')
        


class OwnerCreateForm(UserCreationForm):
    class Meta:
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')
        model = User

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].label = 'Display Name'
        self.fields['email'].label = "Email Address"

class EmployeesCreateForm(UserCreationForm):
    is_admin = forms.BooleanField(required=False)
    is_manager = forms.BooleanField(required=False)
    is_systemAdmin = forms.BooleanField(required=False)

    class Meta:
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')
        model = User

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].label = 'Display Name'
        self.fields['email'].label = "Email Address"

ПРОСМОТРОВ

def registroOwner(request):
    if request.method == "POST":
        form = OwnerCreateForm(request.POST)
        tienda = TiendaForm(request.POST)
        if form.is_valid() and tienda.is_valid():
            tienda.save()
            form.save()
            messages.success(request, f'Tu cuenta ha sido creada!')
            return redirect('login')
    else:
        form = OwnerCreateForm()
        tienda = TiendaForm()

    context = {
        'title': 'Sign up Owner',
        'form': form,
        'tienda': tienda
    }
    return render(request, "accounts/signup.html", context)
Вернуться на верх