簡體   English   中英

如何在Django中使用具有相同屬性的另一個模型創建對象

[英]How to create an object using another model with same attributes in Django

是否可以使用另一個具有相同屬性的對象來創建對象?

就我而言,我有兩個模型TemporaryJobJob 用戶填寫表單時,將創建TemporaryJob 接下來是要確認。 如果他確認TemporaryJob ,則應將對象轉換為常規Job對象。

class Job(models.Model):
    attributes
    methods

class TemporaryJob(Job):
    pass

我已經嘗試過Job.objects.create(temporary_job_instance)但是它不起作用。

首先,Klaus D.的評論是正確的:我也不認為您的設計是正確的。 而不是讓JobTemporaryJob模型具有相似的字段,您應該只擁有一個具有布爾is_temporary字段的Job模型,該字段的True為臨時工作,否則為False 如果采用這種方式,則無需在表之間復制值。 如果您擁有標准化的數據,則將輕松地解決您將遇到的所有其他問題。

無論如何,要真正回答您的問題,請注意objects.create()使用的是kwargs(即,應像Job.objects.create(attr1=val1, att2=val2)這樣Job.objects.create(attr1=val1, att2=val2) 。輸出這些kwargs的最佳方法是創建要傳遞(值對象的值的字典temporary_job_instance ),並通過它來create使用拆包語法( ** )。所以,如果values是值的字典temporary_job_instance ,你可以只需調用Job.objects.create(**values)

現在你只需要創建values從你的字典temporary_job_instance 不幸的是,在django中沒有簡單的方法可以做到這一點:(盡管可以做到-您可以看一下這些問題以獲得一些見識和許多實現方法: 將Django Model對象轉換為dict完整字段或該Django:將模型對象的整個集合轉換為單個字典

這就是我的工作。 如果您保存temporary_job_instance可能會很糟糕,請不要這樣做。

a_dict = temporary_job_instance.__dict__
del a_dict['_state']
del a_dict['id']
Job.objects.create(**a_dict)

暫無
暫無

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

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