Django 外键字段的更新和插入数据

Posted 流年晕开时光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 外键字段的更新和插入数据相关的知识,希望对你有一定的参考价值。

参考资料:

https://www.cnblogs.com/zhukaijian/p/11561128.html

https://blog.csdn.net/lmw1239225096/article/details/78397847

 

model表

### 文件model
class FileProperty(models.Model):
    filename = models.CharField(max_length=250, verbose_name=\'文件名称\')
    productline = models.ForeignKey(ProductLine, verbose_name=\'产品线\' ,null=True ,on_delete=models.SET_NULL)
    upload_time = models.DateTimeField(auto_now_add=True, verbose_name=\'上传时间\')
    describe = models.CharField(max_length=1000, verbose_name=\'备注\')

##产品线
class ProductLine(models.Model):
    name = models.CharField(verbose_name=\'产品线名称\', max_length=250, unique=True)

需要向  FileProperty  表中插入一条数据,views.py 如下:

productline = request.POST.get(\'productline\').strip()
file_list = {   
  \'filename\': file.name,
  \'productline\': productline
  \'describe\': request.POST.get(\'describe\', \'\'),
}
FileProperty.objects.create(**file_list)

当执行时报错如下:

FileProperty 字段 productline  为 ForeignKey(一对多) 解决方法:

productline_object =  ProductLine.objects.get(name=productline)
FileProperty.objects.create(**file_list, productline=productline_object)

FileProperty 字段 productline  为 ManyToManyField(多对多)时的解决方法:

productline_object =  ProductLine.objects.get(name=productline)
fileadd = FileProperty.objects.create(**file_list)
fileadd.productline.add(productline_object)

 

以上是关于Django 外键字段的更新和插入数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL技巧两则:选择一个表的字段插入另一个表,根据其它表的字段更新本表内容

如何在DJANGO里,向有外键的DB里插入数据

(错误)SQL 代码 -530,错误外键 PAY$ID$U 的插入或更新值无效

外键SQL语句的编写

如何根据具有外键关系的另一个模型更新 Django 模型的字段

models.py中增加了字段,django中怎样更新