设置空arraylist Django

2024-04-23 17:46:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如何设置数组列表的null或空值为了插入id autoincrement,我已经尝试了“None”,但它返回了错误。有人能帮我吗

error tuple indices must be integers or slices, not NoneType

views.py

def upload_excel_file(request):
    if request.method =='POST':
        person_resource = PersonResource()
        dataset = Dataset()
        new_person = request.FILES['myfile']

        if not new_person.name.endswith('xlsx'):
            messages.info(request,'wrong format')
            return render (request,'dashboard.html')
        imported_data = dataset.load(new_person.read(),format="xlsx")
        for data in imported_data:
            value = Person(
                data[None],  // It should Empty value 
                data[1],
                data[2],
                data[3],
                data[4],
                data[5]
            )
            value.save()
    return render(request,'dashboard.html')

model.py

class Person(models.Model):
   person_id = models.AutoField(primary_key=True)
   covid_id = models.CharField(max_length=50)
   firstname = models.CharField(max_length=50)
   middle = models.CharField(max_length=50)
   lastname   = models.CharField(max_length=50,blank=True)
   extension  = models.CharField(max_length=50)

Tags: pynoneidnewdataifvaluemodels
3条回答

请不要使用位置参数。这使得读取哪个字段传递的值变得更加困难。可以使用iterable解包位置参数:

for __, covid, first, mid, last, ext, *__ in imported_data:
    value = Person.objects.create(
        covid_id=covid,
        firstname=first,
        middle=mid,
        lastname=last,
        extension=ext
    )

通过使用^{} [Django-doc],您已经在同一语句中将对象保存到数据库中

您可以跳过“自动识别”字段

value = Person(
                covid_id=data[1],
                firstname=data[2],
                middle=data[3],
                lastname=data[4],
                extension=data[5]
            )

为django中的模型字段设置空值。您只需将None值分配给字段。因此:

def upload_excel_file(request):
    if request.method =='POST':
        person_resource = PersonResource()
        dataset = Dataset()
        new_person = request.FILES['myfile']

        if not new_person.name.endswith('xlsx'):
            messages.info(request,'wrong format')
            return render (request,'dashboard.html')
        imported_data = dataset.load(new_person.read(),format="xlsx")
        for data in imported_data:
            value = Person(
                None,  # <   Now null value is given to the field
                data[1],
                data[2],
                data[3],
                data[4],
                data[5]
            )
            value.save()
    return render(request,'dashboard.html')

相关问题 更多 >