簡體   English   中英

Django - 從父母DetailView創建或更新反向外鍵object

[英]Django - Create or Update reverse foreign key object from parents DetailView

我想在父 object DetailView 上創建或更新子 object。

我有兩個模型,如下:

class Parent(models.Model):
    name = models.CharField(max_length=50)

class Child(models.Model):
    name = models.CharField(max_length=50)
    parent = models.ForeignKey(
        'Parent', related_name='children', on_delete=models.CASCADE)

我有以下看法:

 class ParentDetailView(DetailView):
    model = Parent

在 ParentDetailView 上允許創建或更新子 object 的最佳方法是什么?

我在 Django 文檔中看到了以下方法 - https://docs.djangoproject.com/en/2.2/topics/class-based-views/mixins/#using-formmixin-with-detailview

非常感謝

“key”,可以這么說,就是在model class object中創建新字段時使用primary_key參數。 考慮這是我程序中帳戶 model 的修改部分。

class Account(models.Model):
   username = models.CharField(max_length=50)
   email = models.EmailField(max_length=50, primary_key=True)
   password = models.CharField(max_length=50)
   posts = models.IntegerField(default=0)

email 字段被設置為一個主鍵,可用於從程序訪問此特定帳戶 object。 讓我們在views.py中看到它:

email = request.COOKIES.get('email')   
user = Account.objects.get(pk=email)
user.posts = users.posts + 1
user.save()

很酷,所以我們可以更新 object。 您也可以創建一個新字段,並且不必定義每個字段,但您需要確保它們在 models.py 中具有數據庫的默認值。

new_acc = Account(username = form_username, email = form_email, password = form_password)
new_acc.save()

現在,如果您超級酷,並且有了它,您甚至不想將個人信息保存為 cookie。 核實

class Account(models.Model):
   username = models.CharField(max_length=50)
   email = models.EmailField(max_length=50, primary_key=True)
   password = models.CharField(max_length=50)
   uuid = models.CharField(max_length=500, default='defaultforDB')

在views.py中創建

   new_acc = Account(username = form_username, email = form_email, password = form_password, uuid = unique_uuid)
   new_acc.save()

現在我仍然希望能夠僅使用 email 找到我的帳戶。 因此,我創建了另一個 ProfileKey model,其中使用非個人信息用戶名並將其本地存儲在瀏覽器上以訪問我的數據庫。

    if not(request.COOKIES.get('user', 'default') == 'default'):
       user = request.COOKIES.get('user')
       uuid = request.COOKIES.get('uuid')
       userDB_uuid = (Account.objects.get(pk=(ProfileKey.objects.get(pk=(user))).email)).uuid
    if uuid == userDB_uuid:
        return render(request, 'forum/personalhome.html', {'form':form, 'user':user})

通常,創建 object。 使用保存。 找到 object,更改一個值,使用保存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM