【发布时间】:2021-09-11 18:12:26
【问题描述】:
我有 2 个用户模型:
问题是我想根据当前用户过滤数据,所以 id 通常会这样做:
Account.objects.filter(usernmae = User).values_list('status', flat=True)
问题是 Account 数据集没有用户名,但它们都有相同的 ID。
我正在考虑做这样的事情:
Status = Account.objects.filter(user_id=User.objects.filter(username = user).values_list('id', flat=True)).values_list('status', flat=True)
然后我收到以下错误:
如果你们能帮助我,我想有更好的方法。
Views.py:
def upload_audits(request):
form = audits_form(request.POST or None, request.FILES or None)
if form.is_valid():
form.save()
form = audits_form()
obj = Csv_Audit.objects.get(activated=True)
with open(obj.file_name.path,'r') as f:
#to clear model contents before applying new data
auditsModel.objects.all().delete()
reader = csv.reader(f)
for i,row in enumerate(reader):
if i==0:
pass
else:
user = row[1] # gets data from CSV Table and returns username
Status = Account.objects.filter(user_id = request.user).values_list('status')
auditsModel.objects.create(
qs_login = user,
Status = Status,
)
obj.activated = True
obj.save()
return render(request,"backend/uploads.html",{'form':form})
Accounts.py(模型)
class Account(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
status = models.CharField(('Status'), max_length=200, default='',choices = [('Bau','Bau'),('Week 1','Week 1')])
def __str__(self):
return self.user.username
1 个答案:mahdi rahimi
我用下面的代码试过你的方法:
Status = Account.objects.filter(user__username = user).values_list('status', flat=True)
导致以下错误:
然后我想到这样做:
Status = Account.objects.filter(user = user).values_list('status', flat=True)
但我得到了这个错误:
哪个实际上返回了用户名,但它似乎在要求一个 int?
【问题讨论】:
-
user_id__in=User.objects.filter(...) -
基于
username=user,您可以更有效地执行此操作。可以分享一下相关观点吗? -
对于当前用户,您可以使用 user_id=user.objects.get(username=user) 或尽可能从 request.user 数据中获取 id。
-
我写了这个:Status = Account.objects.filter(user_id = request.user).values_list('status') 它填充了字段,但它填充了当前状态的所有字段用户,相反,我希望每个用户都有与其用户名匹配的状态字段。我已经添加了views.py //////顺便感谢您的支持!
-
@King: 你能分享一下你的
Account模型吗...
标签: python django django-models django-views