Как назначить пользователю значение выбора по умолчанию при регистрации в django framework

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

Models.py

class Membership(models.Model):
    MEMBERSHIP_CHOICES = (
        ('Enterprise', 'Enterprise'), # Note that they are all capitalize//
        ('Team', 'Team'),
        ('Student', 'Student'),
        ('Free', 'Free')
    )
    PERIOD_DURATION = (
        ('Days', 'Days'),
        ('Week', 'Week'),
        ('Months', 'Months'),
    )
    slug = models.SlugField(null=True, blank=True)
    membership_type = models.CharField(choices=MEMBERSHIP_CHOICES, default='Free', max_length=30)
    duration = models.PositiveIntegerField(default=7)
    duration_period = models.CharField(max_length=100, default='Day', choices=PERIOD_DURATION)
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)

    def __str__(self):
       return self.membership_type

#### User Membership
class UserMembership(models.Model):
    user = models.OneToOneField(User, related_name='user_membership', on_delete=models.CASCADE)
    membership = models.ForeignKey(Membership, related_name='user_membership', on_delete=models.SET_NULL, null=True)
    reference_code = models.CharField(max_length=100, default='', blank=True)

    def __str__(self):
       return self.user.username

@receiver(post_save, sender=UserMembership)
def create_subscription(sender, instance, *args, **kwargs):
    if instance:
        Subscription.objects.create(user_membership=instance, expires_in=dt.now().date() + timedelta(days=instance.membership.duration))

views.py

def register(request):
    reviews = Review.objects.filter(status='published')
    info = Announcements.objects.all()
    categories = Category.objects.all()
    if request.method == "POST":
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            obj = request.user
            get_membership = Membership.objects.get(membership_type='Free')
            instance = UserMembership.objects.create(user=obj, membership=get_membership)
            messages.success(request, f'Account Successfully created for {username}! You can Login In Now')
            return redirect('userauths:login')
            
    elif request.user.is_authenticated:
        return redirect('elements:home')
    else:
        form = UserRegisterForm()
    context = {
        'reviews': reviews,
        'form': form,
        'info': info,
        'categories': categories
    }
    return render(request, 'userauths/register.html', context)
Вернуться на верх