0

Django Adminでは、私はURLを表示しています。
このURLは、添付されているオブジェクトのIDを使用して作成されます。
私はPython、django、およびdjango-rest-frameworkを使用しています。
私の見解では、私はApiDetailクラスのロジックを持っています。ここで私は 'get'メソッドをオーバーライドします。
私はviews.pyで現在のオブジェクトインクリメント:models.pyでAPIの作成時にDjango管理者に変更された値を保存するには?

currentObject = Api.objects.get(id=pk) 
currentObject.currentNumber += 1 
currentObject.save() 
return self.retrieve(request, *args, **kwargs) 

を私は、URLフィールドを設定します。

ここ
class Api(models.Model): 
    myUrl = models.CharField(max_length=500, blank=True, verbose_name="Url", editable=False) 

    def save(self, *args, **kwargs): 
     self.formUrl = "https://custumUrl/"+str(self.id)+"/"   
     super(Api, self).save(*args, **kwargs) 

私はformUrlフィールドを更新する方法保存APIをオーバーライドします。
フォームは最初のDjangoの管理に加えて、URLを保存するときに私が持っている問題があると言う:

https://custumUrl/none/ 

それは言う必要があります。

https://custumUrl/1/ 

それとも間違いなく、任意の数が、数オブジェクトid。

+1

あなたがあなたの前にURLを割り当てるので:

しかし、あなたはそれを行うにはしたくない場合は、あなたが最初のオブジェクトを保存する必要がありますが、その後、再びそれを保存し、URLにid値を割り当てますIDを定義する前にオブジェクトを保存してください。しかし、URLをフィールドとして保存する理由は、単に必要なときに出力する方法を提供するだけではないのですか? –

+0

フィールドとしてURLが必要なので、ApiAdminクラスに表示することができます。 ** class ApiAdmin(admin.ModelAdmin)**はadmin.pyにあります。 ** list_display =( 'objectName'、 'myUrl')**。私のユーザは、Djangoの管理者を利用し、他のサイトで使用するためのURLを提供します。 –

+1

メソッドの結果は、管理者の[changelist](https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display)と[readonly fields ](https://docs.djangoproject.com/ja/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields)を編集フォームに入力します。 –

答えて

2

たぶん、このような何かを試してみてください。

class Api(models.Model): 
    myUrl = models.CharField(max_length=500, blank=True, verbose_name="Url", editable=False) 

    def save(self, *args, **kwargs): 
     super(Api, self).save(*args, **kwargs) 
     self.formUrl = "https://custumUrl/"+str(self.id)+"/"   
     super(Api, self).save(*args, **kwargs) 
0

Apiクラスに定義されていますか?

また、Apiクラスでは、myUrlが定義されていますが、保存方法はformUrlです。私はダニエルは彼らのコメントで右であり、あなたが彼らのアドバイスに従うべきだと思い

class Api(models.Model): 
    formUrl = models.CharField(max_length=500, blank=True, verbose_name="Url", editable=False) 

    def save(self): 
     """If this is the firsts time populate required details, otherwise update it.""" 
     if not self.id: 
      latest_obj = Api.latest('id') 
      this_id = latest_obj.id 
      self.formUrl = "https://custumUrl/"+str(this_id)+"/"   
      super(Api, self).save() 
     else: 
      #Save it as is 
      super(Api, self).save() 
関連する問題