提问人:Oriza 提问时间:10/28/2023 更新时间:10/28/2023 访问量:36
如何在 Django UpdateView 中获取特定值?
How to get specific values in Django UpdateView?
问:
我有一个通用的 UpdateView,领导者可以在其中管理连接到领导者公司的用户的设置。
我喜欢在选择字段中只包含该值,其中company_id等于 url 中的company_uuid。
现在,想要设置团队的领导者可以访问所有公司团队。
先谢谢你
models.py
class Company(models.Model):
def __str__(self):
return str(self.company_name)
def generate_uuid():
return uuid.uuid4().hex
company_name = models.SlugField(max_length=100)
company_uuid = models.CharField(default=generate_uuid, editable=True, max_length=40)
class Team(models.Model):
def __str__(self):
return str(self.team)
team = models.CharField(max_length=200, blank=True, null=True)
company = models.ForeignKey(Company, null=True, blank=True, on_delete=models.CASCADE)
class Profile(models.Model):
def __str__(self):
return str(self.user)
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
date = models.DateField(auto_now_add=True, auto_now=False, blank=True)
company = models.ForeignKey('Company', on_delete=models.CASCADE, blank=True, null=True)
team01 = models.ForeignKey('Team', on_delete=models.CASCADE, null=True, blank=True, related_name="eteam")
views.py
class UpdateProfileView(SuccessMessageMixin, UpdateView):
model = Profile
form_class = UpdateProfileForm
template_name = 'users/management/update_profile.html'
success_message = 'Változtatások mentve'
def get_success_url(self):
return self.request.META.get('HTTP_REFERER')
urls.py
...
path('management/update_profile/<pk>/<uuid>', login_required(UpdateProfileView.as_view()), name='UpdateProfile'),
...
在表单中,我不使用任何小部件。
答:
1赞
KingRanTheMan
10/28/2023
#1
很高兴看到您的 forms.py,以确保这是正确的,但是如果它全部设置为标准,那么这应该有效:
要根据 URL 中的company_uuid筛选 team01 字段的选择,应覆盖 .在此方法中,将 team01 字段的查询集更改为仅包含与指定公司关联的团队。get_form()
UpdateProfileView
见下文:
views.py
class UpdateProfileView(SuccessMessageMixin, UpdateView):
model = Profile
form_class = UpdateProfileForm
template_name = 'users/management/update_profile.html'
success_message = 'Változtatások mentve'
def get_form(self, form_class=None):
form = super().get_form(form_class)
company_uuid = self.kwargs.get('uuid')
company = get_object_or_404(Company, company_uuid=company_uuid)
form.fields['team01'].queryset = Team.objects.filter(company=company)
return form
def get_success_url(self):
return self.request.META.get('HTTP_REFERER')
希望这有帮助,如果没有,请告诉我(如前所述,很高兴看到表格也很好,但如果您通常这样做,上述修复应该没问题)
评论