У меня есть модель CustomUser, а также модель партнера и модель студента, имеющие отношение OneToOne к CustomUser, как показано ниже:
class CustomUser(AbstractUser):
username = None
email = EmailField(verbose_name='email address', max_length=255, unique=True, )
first_name = CharField(verbose_name='First Name', max_length=30, null=True, )
middle_name = CharField(verbose_name='Middle Name', max_length=30, null=True, blank=True, )
last_name = CharField(verbose_name='Last Name', max_length=30, null=True, )
phone_number = CharField(verbose_name='Phone Number', max_length=30, null=True, )
is_partner = BooleanField(default=False, )
is_student = BooleanField(default=False, )
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = CustomUserManager()
def __str__(self):
return self.email
class Partner(Model):
user = OneToOneField(CustomUser, on_delete=CASCADE, related_name="partner")
class Student(Model):
user = OneToOneField(CustomUser, on_delete=CASCADE, related_name='student')
У меня есть представление, в котором я хочу обновить first_name, last_name, middle_name,и номер телефона пользователя. Это простой вид обновления. Но я хочу поместить две кнопки отправки, в крайнем случае, обе из которых могут быть доступны на странице:
<form method="post" novalidate>
{% csrf_token %}
{% include 'includes/accounts/user_name_and_phone_update_view_form.html' with form=form %}
{% if user.is_student %}
<button type="submit" name="student" id="student">Continue to Student Profile</button>
{% endif %}
{% if user.is_partner %}
<button type="submit" name="partner" id="partner">Continue to Partner Profile</button>
{% endif %}
</form>
Мне нужно настроить мой вид, как показано ниже (это псевдо-код):
@method_decorator([login_required, ], name='dispatch')
class UserNameAndPhoneUpdateView(UpdateView):
model = CustomUser
fields = ('first_name', 'middle_name', 'last_name', 'phone_number',)
template_name = 'accounts/account.html'
if submit button id and name is student:
success_url = reverse_lazy('student_general_information')
elif submit button id and name is partner:
success_url = reverse_lazy('partner', kwargs={'partner_pk': self.request.user.partner.pk})
def get_object(self):
return self.request.user
Как я могу исправить часть if и как передать part_pk в reverse_lazy в elif?