【问题标题】:Updating a Boolean Field in Django database更新 Django 数据库中的布尔字段
【发布时间】:2021-01-14 19:43:58
【问题描述】:

我可以就我做错的事情寻求帮助吗?我有一个布尔字段,当用户单击它时我想要它,它会在数据库中更新,但我无法实现我的目标。我的代码如下以便更好地理解 模型.py

class OrderItem(models.Model):
    designer_size = models.ForeignKey("Frame_Sizes_Designer", on_delete=models.CASCADE, blank=True)

class Frame_Sizes_Designer(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    small = models.BooleanField(default=False, blank=True)
    
    def __str__(self):
        return self.user.username

views.py

def DesignerFrameSizeSmall(request):
    dss = get_object_or_404(OrderItem, id=request.POST['id'])
    dss.designer_size.small = not dss.designer_size.small
    dss.save()
    messages.info(request, "Your prefered size has been stored... Thanks")
    return redirect('business:summary')

urls.py

app_name = 'business'
urlpatterns =[
    path('designer_frame_small_size/', DesignerFrameSizeSmall, name='dfss')
    ]

html和js

<form action="" method="POST">
            {% csrf_token %} 
              <input type="checkbox" id="designer_small" value="{{dss.designer_size.small}}">
              <label>Small</label>
            </form>

$(document).ready(function(){
$('#designer_small').change(function(){
        $.post("{% url 'business:dfss' %}",{
          id: "{{items.id}}",
          designsmall: this.checked,
          csrfmiddlewaretoken: '{{csrf_token}}'
        });
        });

当我检查控制台时,我收到的错误消息是内部服务器错误,并且我的命令提示符dss.designer_size.small = not dss.designer_size.small AttributeError: 'NoneType' object has no attribute 'small' 中也出现错误

【问题讨论】:

  • 我认为应该是“dss.designer_size.save()”

标签: python django django-models django-views django-templates


【解决方案1】:

您的 dss 对象缺少 Designer_size 的值,即 dss.designer_size 为 None。

【讨论】:

  • 我认为问题是因为我正在使用外部字段,即class OrderItem(models.Model): designer_size = models.ForeignKey("Frame_Sizes_Designer", on_delete=models.CASCADE, blank=True),并且我正在尝试获取具有OrderItem 外键的Frame_Sizes_Designer 的值.没有外键,它工作得很好
猜你喜欢
  • 2011-06-23
  • 2011-05-13
  • 2011-06-13
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多