django такого столбца нет: userdash_assetlist.user_id - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь получить доступ к своей странице / шаблону просмотра, когда получаю следующую ошибку.

no such column: userdash_assetlist.user_id

Когда я получаю доступ к этому URL-адресу.

http://192.168.42.14:8081/view/

Я почти уверен, что это не удалось получить доступ к объекту здесь.

{% for td in user.assetlist.all %}

Я не уверен, что я сломал. Он работал с предыдущей конфигурацией и в какой-то момент сломался во время изменений.

$ cat userdash / templates / userdash / view. html

{% extends 'userdash/base.html' %}

{% block title %} View Assets page {% endblock %}
{% load crispy_forms_tags %}


{% block content %}
        <h3>Your Assets Page</h3>
        {% for td in user.assetlist.all %}
                        <p><a href="/{{td.id}}">{{td.name}}</a></p>
        {% endfor %}

{% endblock %}

$ cat userdash / models.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class AssetList(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="assetlist", null=True)
        name = models.CharField(max_length=200)

        def __str__(self):
                return self.name

class Items(models.Model):
        assetlist = models.ForeignKey(AssetList, on_delete=models.CASCADE)
        user_asset = models.CharField(max_length=300)
        sell_asset = models.BooleanField()

        def __str__(self):
                return self.user_asset

$ cat userdash / views.py

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from .models import AssetList, Items
from .forms import CreateNewTrade

# Create your views here.


#def index(response):
#       return HttpResponse("<h1>Hello Dark World!</h1>")

def userdash(response, id):
        ls = AssetList.objects.get(id=id)
        if response.method == "POST":
                print(response.POST)
                if response.POST.get("save"):
                        for item in ls.items_set.all():
                                if response.POST.get("c" + str(item.id)) == "clicked":
                                        item.sell_asset = True
                                else:
                                        item.sell_asset = False

                                item.save()

                elif response.POST.get("newItem"):
                        txt = response.POST.get("new")
                        if len(txt) > 2: #this validation is retarded and needs to be fixed
                                ls.items_set.create(user_asset=txt, sell_asset=False)
                        else:
                                print("invalid")


        #items = ls.items_set.get(id=1)
        #return HttpResponse("<h1>User Dashboard!</h1><h2>%s</h2><br></br><p>%s</p>" %(ls.name, str(items.user_asset)))
        return render(response, "userdash/list.html", {"ls":ls})

def home(response):
        #pass
        return render(response, "userdash/home.html", {})

def create(response):
        #response.user
        if response.method == "POST":
                form = CreateNewTrade(response.POST)
                if form.is_valid():
                        n = form.cleaned_data["name"]
                        t = AssetList(name=n)
                        t.save()
                        response.user.assetlist.add(t)

                        return HttpResponseRedirect("/userdash/%i" %t.id)
        else:
                form = CreateNewTrade()
        return render(response, "userdash/create.html", {"form":form})

def view(response):
        return render(response, "userdash/view.html", {})

полная ошибка:

OperationalError at /view/

no such column: userdash_assetlist.user_id

Request Method:     GET
Request URL:    http://192.168.42.14:8081/view/
Django Version:     3.0.5
Exception Type:     OperationalError
Exception Value:    

no such column: userdash_assetlist.user_id

Exception Location:     /home/piggy/Env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 396
Python Executable:  /usr/local/bin/uwsgi
Python Version:     3.7.3
Python Path:    

['.',
 '',
 '/home/piggy/Env/lib/python37.zip',
 '/home/piggy/Env/lib/python3.7',
 '/home/piggy/Env/lib/python3.7/lib-dynload',
 '/usr/lib/python3.7',
 '/home/piggy/Env/lib/python3.7/site-packages']

Как мне получить доступ к пользовательским данным списка активов из функции просмотра?

К вашему сведению, я запустил бесплатную sh makemigrations и мигрировал. Я «думаю», что он сломался после того, как я запустил их в первую очередь, но не уверен. Он не работает после запуска сейчас.

1 Ответ

1 голос
/ 08 мая 2020

полное удаление базы данных sqlite + удаление содержимого миграций (но init ), а затем восстановление всей базы данных, исправили проблему.

...