0

Stupid question time! :)

I don't think this is possible but I need to ask in case I'm wrong. Is it possible to create a one to one relationship to a normal Django model in the JSON of a JSONField?

Example:

Django Model (Example):

class TheModel(models.Model):
    example = models.CharField(max_length=255)
    something = models.CharField(max_length=255)
    dt = models.DateTimeField()

Django model in separate app (Example):

class JsonModel(models.Model):
    json_stuff = JSONField(default=list)

The JSON itself will be a list of dictionaries of will have multiple layers but some need to hold a reference to the TheModel to be presented in a template (the same way a One to One relationship would).

JSON (Example):

[{"title": "A Title", "body": [{"line": "Some text", "reference": TheModel}, {"line": "More Text", "reference": None }]}

It's looking like I'll have to loop through the JSON and insert the reference manually in the view.

Edit

Following on from @ruddra's comment. There is no consistancy in which TheModel is referenced. If there was I would have made a normal One to One relationship.

Please note that I'm asking if it's possible not what I need to do. I am already putting the id of TheModel where it needs to go I'm only curious to see is JSONField can do One to One in the same why Django does ForiegnKey fields in templates.

James Bellaby
  • 158
  • 14
  • No, it's not possible in a high-level way, you just need to set the value to `themodel_instance.id` directly. Note that there's no "looping through the JSON" if you're using a `JSONField` you can access its properties directly as in any python `dict`. – dirkgroten Nov 23 '18 at 10:00
  • If you have consistency in json with the reference for the `TheModel`, then why don't you try to make it a FK with null True, so that it can be null able as well. – ruddra Nov 23 '18 at 11:01
  • @rudda Each reference will be to a different 'TheModel' int the database. – James Bellaby Nov 23 '18 at 11:39

0 Answers0