Thanks, it turns out it wasn’t showing the right state in the edit screen because I was trying something silly to only show the field if the entry had related entries - see below. If i take the field out of the reverse_related entries lopp it works fine. You wouldn’t know an easy way of accomplishing that would you?
What sort of javascript would i need to set a default state on the create new entry form?
{exp:safecracker channel="campaigns" return="account/my-campaigns" error_handling="inline" entry_id='{segment_3}'}
<h2><span class="grey">Edit campaign:</span> {title}</h2>
<p>Edit your campaign details and assets, and make campaigns active or deactivate them here.</p>
<div class="form">
<div class="error">
{if global_errors:count}
<ul>
{global_errors}
<li>{error}</li>
{/global_errors}
</ul>
{/if}
{if field_errors:count}
<ul>
{field_errors}
<li>{error}</li>
{/field_errors}
</ul>
{/if}
</div>
<br class="clear" />
<fieldset>
<p class="error">{error:title}</p>
<label>Campaign name:</label>
<input type="text" name="title" id="title" value="{title}"/></input>
<label>Campaign status:</label>
{exp:channel:entries status="open|featured" entry_id='{segment_3}' username="CURRENT_USER"}
{reverse_related_entries limit="1"}
{field:campaign_status}
{/reverse_related_entries}
{/exp:channel:entries}
<p class="error">{error:campaign_desc}</p>
<label>Description:</label>
{field:campaign_desc}
<p class="hint">{instructions:campaign_desc}</p>
<p class="error">{error:campaign_short_desc}</p>
<label>Short description:</label>
{field:campaign_short_desc}
<p class="hint">{instructions:campaign_short_desc}</p>
{category_menu}
<label for="categories">Categories</label>
<select name="category[]" id="categories">
{select_options}
</select>
{/category_menu}
.........(I removed a load of fields here)........
<div class="clear"></div>
{/exp:safecracker}