Django, связывание модели с полем модели другого приложения

Прежде всего, это может быть не лучший способ установки, однако, я учусь на ходу и пытаюсь найти правильный ответ.

У меня есть приложение Account, которое обрабатывает регистрацию пользователя, я добавил параметр couple_choice, который я пытаюсь получить в модели другого приложения.

модель ACCOUNT

class Account(AbstractBaseUser):
    COUPLE_CHOICE = Choices('single', 'couple')

    email                   = models.EmailField(verbose_name="email", max_length=60, unique=True)
    username                = models.CharField(max_length=30, unique=True)
    date_joined             = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
    last_login              = models.DateTimeField(verbose_name='last login', auto_now=True)
    is_admin                = models.BooleanField(default=False)
    is_active               = models.BooleanField(default=True)
    is_staff                = models.BooleanField(default=False)
    is_superuser            = models.BooleanField(default=False)
    profile_image           = models.ImageField(max_length=255, upload_to=get_profile_image_filepath, null=True, blank=True, default=get_default_profile_image)
    hide_email              = models.BooleanField(default=True)
    couple_choice           = models.CharField(choices=COUPLE_CHOICE, default='single', max_length=20)

Затем у меня есть еще одно приложение Profile, которое я хочу сделать парой = к Account.account.couple_choice, или если Account.couple.choice 'couple', то Profile.couple = True

from account.models import Account

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,blank=True, null=True, related_name="swinger")
    couple = models.ManyToManyField(Account, to_field="couple_choice", blank=True, null=True,related_name="is_couple", on_delete=models.CASCADE)

Пожалуйста, сообщите мне лучший способ сделать это? Спасибо

Если вы установили Profile.couple = True, вы должны определить couple как boolean. Чтобы достичь цели, вы должны контролировать Account.couple_choise, когда пользователь сохраняет профиль. Вы можете сделать это, если у вас есть класс ModelAdmin в файле admin.py, например

@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
     def save_model(self, request, obj, form, change):
        if Account.objects.filter(email=request.user.email).exists()
            account = Account.objects.get(email=request.user.email)
            if account.couple_choice == 'couple'
                obj.couple = True
        super().save_model(request, obj, form, change)
Вернуться на верх