【问题标题】:how to fetch name in instead of id in django如何在 django 中获取名称而不是 id
【发布时间】:2020-11-12 04:12:42
【问题描述】:

我有一个 ServiceProvider 模型。当我在 CSV 中导入它时,它提供类别、国家、州、城市、名称的提供者 ID。在 CSV 中导入时如何获取名称而不是 ID。

这是我的 models.py

class ServiceProvider(models.Model):
    name = models.OneToOneField('accounts.User', on_delete=models.CASCADE)
    Date_Of_Birth = models.DateField(null=True)
    # upload_Photograph = models.ImageField(upload_to='images/') 
    Education_Qualification  = models.CharField(max_length=254, null=True)
    category = models.ForeignKey('accounts.Category', null=True, on_delete=models.CASCADE, related_name='category')
    phone_No = models.IntegerField(null=False)
    alternate_No = models.IntegerField(null=True)
    bank_account_no = models.IntegerField(null=True)
    IFSC_code = models.IntegerField(null=True)
    branch_name = models.CharField(max_length=254, null=True)
    PAN = models.CharField(max_length=254, null=True)
    country = models.ForeignKey('accounts.Country', null=True, on_delete=models.CASCADE, related_name='country')
    state = models.ForeignKey('accounts.State', null=True, on_delete=models.CASCADE, related_name='state')
    cities = models.ForeignKey('accounts.City', null=True, on_delete=models.CASCADE, related_name='cities')
    address = models.CharField(max_length=254)


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

这是我的观点。py

@login_required
def export_csv(request):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="user-serviceprovider.xls"'
    writer = csv.writer(response)
    writer.writerow(['name', 'Date_Of_Birth', 'Education_Qualification', 'category','phone_No','alternate_No','bank_account_no','IFSC_code','branch_name','PAN','country','state','cities','address'])
    users = ServiceProvider.objects.all().values_list('name', 'Date_Of_Birth', 'Education_Qualification', 'category','phone_No','alternate_No','bank_account_no','IFSC_code','branch_name','PAN','country','state','cities','address')
    for user in users:
      writer.writerow(user)     
    return response

【问题讨论】:

    标签: python python-3.x django django-models export-to-csv


    【解决方案1】:
    for u in users:
       row = [u.id, u.name, u.yourfield, ...]
       writer.writerow(row)
    

    【讨论】:

      【解决方案2】:

      我认为你真正需要的是这样的小调整:

      ...
      users = ServiceProvider.objects.all().values_list('name__username', 'Date_Of_Birth', 'Education_Qualification', 'category','phone_No','alternate_No','bank_account_no','IFSC_code','branch_name','PAN','country','state','cities','address')
      ...
      

      注意'name__username',它告诉 Django 再深入一点,从accounts.User 表中选择username 列,因为普通的'name' 指的是ServiceProvider 表中的外键(这里是@987654327 @ 只是一个示例,列的实际名称实际上取决于您的 accounts.User 表的架构。

      【讨论】:

      • 感谢您的回答。它满足我的要求
      猜你喜欢
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2021-09-10
      • 2012-03-02
      相关资源
      最近更新 更多