尝试发布数据时出现Django 1.11错误

时间:2019-12-06 08:51:32

标签: python django django-1.11

我是Django 1.11 LTS的新手,我正试图从很长时间开始解决此错误。这是发生错误的代码:

model.py:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "repo.mirror_config",
            "description": "mirror_config is a read-only field and must not be set"
          }
        ]
      }

Views.py块:

    name = models.CharField(db_column="name", db_index=True, max_length=128)
    description = models.TextField(db_column="description", null=True, blank=True)
    created = models.DateTimeField(db_column="created", auto_now_add=True, blank=True)
    updated = models.DateTimeField(db_column="updated", auto_now=True, null=True)
    active = models.BooleanField(db_column="active", default=True)    
    customer = models.ForeignKey(Customer, db_column="customer_id")

    class Meta(object):
        db_table="customer_build"
        unique_together = ("name", "customer")

    def __unicode__(self):
        return u"%s [%s]" % (self.name, self.customer)

    def get(self,row,customer):
        build_name = row['build']
        return self._default_manager.filter(name = build_name, customer_id = customer.id).first()

    def add(self,row):
        pass

错误回溯:

for row in others:
       rack_name      = row['rack']
       build          = Build().get(row,customer)
       try:
           rack = Rack().get(row,customer)
       except Exception as E:
           msg = {'exception': str(E), 'where':'Non-server device portmap creation', 'doing_what': 'Rack with name {} does not exist in build {}'.format(rack_name,build.name),
                  'current_row': row,  'status': 417}
           log_it('An error occurred: {}'.format(msg))
           return JsonResponse(msg, status = 417)

我正试图了解这个问题,以便我可以解决。

谢谢。

关于, 巴拉斯

2 个答案:

答案 0 :(得分:0)

尝试更改此行:

return self._default_manager.filter(name = build_name, customer_id = customer.id).first()

对此:

return self.__class__._default_manager.filter(name = build_name, customer_id = customer.id).first()

答案 1 :(得分:0)

根据Django 1.10,不建议使用_default_manager,因此我做了return Build.objects.filter(name = build_name, customer_id = customer.id).first() and it solved it.