#django #django-models #error-handling #django-admin #django-import-export
#django #django-модели #обработка ошибок #django-admin #django-импорт-экспорт
Вопрос:
У меня есть две модели, связанные через внешний ключ, когда я загружаю модель с внешним ключом, значение идентификатора, которое создается автоматически, принимает значение поля, которое является внешним ключом. В чем может быть возможная причина ?.
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
Комментарии:
1. можете ли вы опубликовать объявление о своем ресурсе и пример строки импорта (отредактировано)
2. Добавлено объявление ресурса выше.
3. И для импорта я использую файл Excel, содержащий значения для каждого поля.
Ответ №1:
Для вашего LVPNResource
вам нужно связать a ForeignKeyWidget
с вашим bs_id
полем:
bs_id = fields.Field(
column_name='BS_ID',
attribute='BS_ID',
widget=ForeignKeyWidget(Station, 'BS_ID'))