【问题标题】:Field 'id' expected a number but got 'ANPKUR0724' while Importing Data in Django字段“id”需要一个数字,但在 Django 中导入数据时得到“ANPKUR0724”
【发布时间】:2021-01-14 18:21:41
【问题描述】:

我有两个模型,通过外键关联,当我上传具有外键的模型时,自动创建的 id 值取外键字段的值。可能的原因是什么?

 class Station(models.Model):
          BS_ID = models.TextField(max_length=20,unique=True)
          BS_Name = models.CharField(max_length=20)
          City = models.CharField(max_length=20,null=True)
          State = models.CharField(max_length=20,null=True)
          City_Tier = models.CharField(max_length=10,null=True)
          Lat = models.DecimalField(max_digits=10,decimal_places=5,null=True,blank=True)
          Long = models.DecimalField(max_digits=10,decimal_places=5,null=True,blank=True)
    
    class CustomerLVPN(models.Model):
      Customer_Name = models.CharField(max_length=200)
      Order_Type = models.CharField(max_length=200,null=True)
      Feasibility_ID = models.IntegerField(null=True)
      Circuit_ID = models.CharField(max_length=250,null=True,blank=True)
      Req_BW = models.DecimalField(max_digits=6,decimal_places=3,null=True,blank=True)
      City = models.CharField(max_length=200,null=True)
      State = models.CharField(max_length=200,null=True)
      Region =models.CharField(max_length=200,null=True)
      L2_Lat = models.DecimalField(max_digits=6,decimal_places=3,null=True,blank=True)
      L2_Long = models.DecimalField(max_digits=6,decimal_places=3,null=True,blank=True)
      BS_ID = models.ForeignKey(Station,to_field='BS_ID',related_name='ConfirmedCustomer',on_delete=models.SET_NULL,null=True)

因此,当我为 CustomerLVPN 模型上传数据时,我收到以下错误 - “BS_ID 字段 'id' 需要一个数字,但得到的是 'ANPKUR0724'。”

以下是资源代码:

class StationResource(resources.ModelResource):
    class Meta:
        model=Station
        exclude = ['id']
        use_bulk=True
        batch_size = 500

class StationAdmin(ImportExportModelAdmin):
    resource_class=StationResource


class LVPNResource(resources.ModelResource):

    class Meta:
        model = CustomerLVPN
        use_bulk = True
        batch_size = 500

class LVPNAdmin(ImportExportModelAdmin):
    resource_class = LVPNResource

【问题讨论】:

  • 您能否发布您的资源声明和示例导入行(已编辑)
  • 添加了上面的资源声明。
  • 对于导入 im 使用具有针对每个字段的值的 excel 文件。

标签: django django-models error-handling django-admin django-import-export


【解决方案1】:

对于您的LVPNResource,您需要将ForeignKeyWidget 与您的bs_id 字段相关联:

bs_id = fields.Field(
        column_name='BS_ID',
        attribute='BS_ID',
        widget=ForeignKeyWidget(Station, 'BS_ID'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2021-04-23
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多