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


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

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主键是不能为空的,

```

#使用models.ForeignKey时python3.7一定要传入实参on_delete=models.CASCADE
class Album(models.Model):
artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()