Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 连接Django中的3个模型以访问其他模型数据_Python_Django_Django Models - Fatal编程技术网

Python 连接Django中的3个模型以访问其他模型数据

Python 连接Django中的3个模型以访问其他模型数据,python,django,django-models,Python,Django,Django Models,我有3个模型,在第3个名为Bookauth的模型中,包含了其他两个模型的外键图书,Authors。我想从某个作者的“书”中获取所有字段(考虑到他写了不止一本书)。我在模型中使用了manager,但失败了 型号 class Authors(models.Model): aid = models.AutoField(primary_key=True) aname = models.CharField(max_length=200, blank=True, null=True)

我有3个模型,在第3个名为Bookauth的模型中,包含了其他两个模型的外键图书,Authors。我想从某个作者的“书”中获取所有字段(考虑到他写了不止一本书)。我在模型中使用了manager,但失败了

型号

class Authors(models.Model):
    aid = models.AutoField(primary_key=True)
    aname = models.CharField(max_length=200, blank=True, null=True)
    adescription = models.TextField( blank=True, null=True)

    def __str__(self):
        return self.aname


class Books(models.Model):
    bid = models.BigIntegerField(primary_key=True)
    bname = models.CharField(max_length=200, blank=True, null=True)
    bdescription = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.bname


class Bookauth(models.Model):
    bid = models.ForeignKey(Books, on_delete=models.DO_NOTHING, db_column='bid', blank=True, null=True)
    aid = models.ForeignKey(Authors, on_delete=models.DO_NOTHING, db_column='aid', blank=True, null=True)
观点不要认为这是相关的

def getObject(request):
    all_books = Books.objects.all()
    html = serializers.serialize('json', all_books)
    return HttpResponse(html)
    #data = serializers.serialize("json", Books.objects.all())
    #return HttpResponse(data, mimetype='application/json')

def getAuth(request):
    all_auth = Authors.objects.all()
    htm = serializers.serialize('json', all_auth)
    return HttpResponse(htm)

def bookAuth(request):
    all_keys = Bookauth.objects.all()
    key_serial = serializers.serialize('json', all_keys)
    return HttpResponse(key_serial)

def book_search(request):
    b = request.GET.get('book', '')
    book = Books.objects.filter(pk = b)

    return HttpResponse(book)

def author_search(request):
    x = request.GET.get('author', '')
    auth = Authors.objects.filter(pk= x)


    return HttpResponse(auth)

关于我能做什么有什么建议吗?

考虑到您在作者或书籍模型上使用了许多关系的中间表


对于进一步查询ORM示例也很有用

,因为您正在使用中间表来处理作者或书籍模型上的许多关系

对于进一步查询ORM示例也很有用,例如:

 class Author(models.Model):
    aid = models.AutoField(primary_key=True)
    aname = models.CharField(max_length=200, blank=True, null=True)
    adescription = models.TextField( blank=True, null=True)
    books = models.ManyToManyField(Books)

    def __str__(self):
       return self.aname
大概是这样的:

 class Author(models.Model):
    aid = models.AutoField(primary_key=True)
    aname = models.CharField(max_length=200, blank=True, null=True)
    adescription = models.TextField( blank=True, null=True)
    books = models.ManyToManyField(Books)

    def __str__(self):
       return self.aname

您应该使用多对多字段,而不是显式定义Bookauth。@DanielRoseman我能举一个例子说明这将如何在我的模型上工作吗?如中所述,我想通过他编写的所有bookid获取作者id。您应该使用多对多字段,而不是显式定义Bookauth。@DanielRoseman我能举个例子说明这在我的模型上是如何工作的吗?正如在中一样,我想用他编写的所有bookid获取作者id。
def authbook(请求):#p=request.get.get('aid','')bo=Authors.objects.all()l=[]对于bo中的bid:if aid==10:l.append(bid)返回HttpResponse(l)
这在我的视图中是错误的。
def authbook(请求):#p=request.GET.GET('aid','')bo=Authors.objects.all()l=[]对于bo中的bid:if aid==10:l.append(bid)return HttpResponse(l)
这在我的视图中,可能是错误的。