这里我过滤的是与django用户模型有一个单一关系的人员,下面的功能代码
def filter_staff_users(request):
也可以按我的要求工作,但我得到的问题是在消息中显示组织名称时。
organization.name
但没用。我得到了
'str' object has no attribute 'name'
当我试图转换int时
organization = int(request.GET.get('organization'))
然后它再次抛出
'int' object has no attribute 'name'
.
如何在此处显示组织名称?
模特儿
class Organization(models.Model):
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class Staff(models.Model):
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE, related_name='staff')
name = models.CharField(max_length=255, blank=True, null=True)
organization = models.ForeignKey(Organization, on_delete=models.SET_NULL, blank=True, null=True, related_name='staff')
在添加staff_用户时,我添加了如下组织
<select name="organization">
{% for organization in organizations %}
<option value="{{organization.pk}}" >{{organization.name}}</option>
{% endfor %}
</select>
VIEW
def filter_staff_users(request):
year = request.GET.get('year')
month = request.GET.get('month')
# month_name = calendar.month_name[int(month)]
organization = request.GET.get('organization')
print('org', type(organization))
if year and month and organization:
staffs = get_user_model().objects.filter(Q(staff__joined_date__year=year) & Q(staff__joined_date__month=month) & Q(staff__organization=organization))
messages.success(request, '{} staffs found for {} {} and {}'.format(staffs.count(), year, calendar.month_name[int(month)], organization))