David__Liang 2022-03-14 11:28 采纳率: 82.4%
浏览 47
已结题

Django,外键插入


from django.shortcuts import render
from blog import models
from blog.models import Type,Title

# Create your views here.
def add(request):
    if request.method == 'POST':
        #获取表单
        title = request.POST.get('title')
        answer = request.POST.get('answer')
        type = Type.objects.get(T_Type='选择题')
        print(type)

        #保存到数据库中
        b1 = Title(Title=title,Answer=answer,t_Type=type)
        b1.save()
        # models.Title.objects.create(
        #     Title=title,
        #     Answer=answer,
        #     t_Type=type,
        # )
        return render(request,'success.html')
    else:
        return render(request,'test.html')
from django.db import models

# Create your models here.
class Title(models.Model):
    id = models.AutoField(primary_key = True,null=False)
    Title = models.CharField(max_length=255,null=True)
    Answer = models.CharField(max_length=255,null=True)
    t_Type = models.ForeignKey('Type',on_delete=models.CASCADE,to_field='T_Type',null=True)

    class Meta:
        ordering = ['t_Type']

class Type(models.Model):
    T_Type = models.CharField(max_length=10,null=False,default=True,primary_key=True)

    class Meta:
        ordering = ['T_Type']


img


外键插入失败,求解为什么外键的数据没办法插入到数据库中

  • 写回答

2条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-03-14 13:05
    关注
    t_Type = models.ForeignKey('Type',on_delete=models.CASCADE,to_field='T_Type',null=True)
    

    我觉得你大问题出在这段代码上,去掉null=true,另外T_Type已经是主键,不需要再to_field,如果你允许一个字段为空可以用blank=True,而不是null
    你得type模型完全可以去掉null=False主键是不能为空的,

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月14日